package com.itlaobing.dispatch.redirect;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 重定向 客户端向服务端发出请求，服务端不支持
 *       但获取了请求，告诉客户端哪个支持
 *       并且将地址给了 HTTP响应 让客户端 请求响应
 */
@WebServlet("/xu/shu/*")
public class XuShuServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        this.log("老夫姓徐名庶字元直，为你推荐卧龙山诸葛");

        //  1、
        // 通过 HTTP响应 的 状态码 "命令" 浏览器打开另外一个地址
        response.setStatus( 302 ); // 浏览器得到服务端发送的302状态码后立即发出新的请求


        String applicationPath = request.getContextPath();//获得客户端的地址
        String servletUrlPattern = "/zhu/ge/liang"; //你需要去 找 的地址
        this.log( "目标Servlet对应的路径:" + servletUrlPattern );

        String location = applicationPath+servletUrlPattern;// 尽量在Servlet的URL之前添加当前Web应用的路径
        this.log( "重定向后的路径:" + location );

        //  2、
        // 通过 HTTP响应 的 响应头 设置 浏览器需要打开的新地址
        response.setHeader("location",location );// "location" 是 HTTP响应头 中的 字段名称

        return ; // 为了避免重定向之后还有其它操作，建议让当前方法立即返回
    }
}
